package cn.net.sinodata.system.domain.vo;

import cn.net.sinodata.common.translation.annotation.Translation;
import cn.net.sinodata.common.translation.constant.TransConstant;
import cn.net.sinodata.system.domain.PmMonitorProduct;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import cn.net.sinodata.common.excel.annotation.ExcelDictFormat;
import cn.net.sinodata.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * 监控产品管理视图对象 pm_monitor_product
 *
 * @author yinliangyun
 * @date 2025-10-30
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = PmMonitorProduct.class)
public class PmMonitorProductVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ExcelProperty(value = "主键")
    private String id;

    /**
     * 产品编号
     */
    @ExcelProperty(value = "产品编号")
    private String productCode;

    /**
     * 产品名称
     */
    @ExcelProperty(value = "产品名称")
    private String productName;

    /**
     * 成交渠道
     */
    @ExcelProperty(value = "成交渠道")
    private String channelId;

    /**
     * 业务类型（市场类型）
     */
    @ExcelProperty(value = "业务类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "市=场类型")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "biz_type")
    private String bizType;

    /**
     * 确认方式（1-集中-中债接口2-集中-上清接口3-集中-交易后接口4-集中-交易后客户端5-无需确认6-双边-SWIFT电文）
     */
    @ExcelProperty(value = "确认方式", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=-集中-中债接口2-集中-上清接口3-集中-交易后接口4-集中-交易后客户端5-无需确认6-双边-SWIFT电文")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "confirm_mode")
    private String confirmMode;

    /**
     * 清算方式（1-双边净额清算2-双边全额清算3-集中净额清算4-SGE净额+全额（现阶段表示 SGE（上海黄金交易清算））6-集中清算7-双边净额自行清算13-自行清算）
     */
    @ExcelProperty(value = "清算方式", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1=-双边净额清算2-双边全额清算3-集中净额清算4-SGE净额+全额（现阶段表示,S=GE（上海黄金交易清算")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "clearing_mode")
    private String clearingMode;

    /**
     * 起息速度
     */
    @ExcelProperty(value = "起息速度")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "confirm_rate")
    private String interestRate;

    /**
     * 起息付款币种
     */
    @ExcelProperty(value = "起息付款币种")
    private String interestCurrency;

    /**
     * 结算币种
     */
    @ExcelProperty(value = "结算币种")
    private String settlementCurrency;

    /**
     * 清结算场景
     */
    @ExcelProperty(value = "清结算场景")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "settle_scene")
    private String settleScene;

    /**
     * 清结算结果获取方式
     */
    @ExcelProperty(value = "清结算结果获取方式")
    private String accessMethod;

    /**
     * 节假日类型
     */
    @ExcelProperty(value = "节假日类型")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "holiday_type")
    private String holidayType;

    /**
     * 节假日顺延规则
     */
    @ExcelProperty(value = "节假日顺延规则")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "holiday_rule")
    private String holidayRule;

    /**
     * 是否夏令时
     */
    @ExcelProperty(value = "是否夏令时")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "is_summer_time")
    private String isSummerTime;

    /**
     * 异常提醒
     */
    @ExcelProperty(value = "异常提醒")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "abnolmal_alert")
    private String abnolmalAlert;

    /**
     * 异常提醒规则
     */
    @ExcelProperty(value = "异常提醒规则")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "abnolmal_alert_role")
    private String abnolmalAlertRole;

    /**
     * 是否需要确认
     */
    @ExcelProperty(value = "是否需要确认")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "is_confirm")
    private String isConfirm;

    /**
     * 是否需要清算
     */
    @ExcelProperty(value = "是否需要清算")
    @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, other = "is_clearing")
    private String isClearing;

    /**
     * 报文模板
     */
    @ExcelProperty(value = "报文模板")
    private String messageTemp;

    /**
     * 唯一性判断规则
     */
    @ExcelProperty(value = "唯一性判断规则")
    private String uniquenessRole;

    /**
     * 优先级
     */
    @ExcelProperty(value = "优先级")
    private String priority;

}
